package com.wrial.face;
/*
 * @Author  Wrial
 * @Date Created in 18:25 2020/8/18
 * @Description
 */

/**
 * 对于这个走的路，我认为可以根据组合公式来完成
 * 因为一个矩阵的最短路径，也就是它的横向路径+纵向路径（因为你题目中说只能走线）
 * 可以计算出   总路径 = 横向+纵向  根据组合公式可得结果为   C(总路径,纵向路径)
 */
public class Ant {


    public int maxPath(int x1, int y1, int x2, int y2, int[][] m) {
        if (m.length == 0) return 0;
        int total = Math.abs(x1 - x2) + Math.abs(y1 - y2);
        //计算total阶乘
        int totalX = help(total);
        // 计算y1-y2的阶乘
        int yX = help(Math.abs(y1 - y2));
        // 就散total-|y1-y2|的阶乘
        int subX = help(total - Math.abs(y1 - y2));
        return totalX / (yX * subX);
    }

    /**
     * 计算阶乘
     * @param total
     * @return
     */
    private int help(int total) {
        int sum = 1;
        for(int i=1;i<=total;i++){
            sum *= i;
        }
        return sum;
    }
}
